package E_2024;
/*
题目描述:
    小明在玩一个数字加减游戏，只使用加法或者减法，将一个数字s变成数字t。
    每个回合，小明可以用当前的数字加上或减去一个数字。
    现在有两种数字可以用来加减，分别为a,b(a!=b)，其中b没有使用次数限制。
    请问小明最少可以用多少次a，才能将数字s变成数字t。
    题目保证数字s一定能变成数字t。
输入描述
    输入的唯一一行包含四个正整数s,t,a,b(1<=s,t,a,b<=105)，并且a!=b.
输出描述
    输出的唯一一行包含一个整数，表示最少需要使用多少次a才能将数字s变成数字t.
示例1
    输入:
    1 10 5 2
    输出:
    1
    说明:
    初始值1加一次a变成6，然后加两次b变为10，因此a的使用次数为1次。
示例2
    输入:
    11 33 4 10
    输出:
    2
    说明:
    11减两次a变成3，然后加三次b变为33，因此a的使用次数为2次。
 */
public class E_200_11 {
    public static void main(String[] args) {
        System.out.println(ans(11,33,4,10));
        System.out.println(ans(1,10,5,2));
        System.out.println(ans(11,33,10,4));
        System.out.println(ans(33,11,10,4));
        System.out.println(ans(33,11,4,10));
    }
    public static int ans(int s, int t, int a, int b){
        int ans = 0;
        int x = s;
        int i = Math.abs(s - t)/a;
        while(i >= 0){
            int times = i;
            while(times > 0){
                x += a;
                times--;
            }
            while (x < t){
                x += b;
            }
            while(x > t){
                x -= b;
            }
            if (x == t) ans = i;
            times = i;
            x = s;
            while(times > 0){
                x -= a;
                times--;
            }
            while (x < t){
                x += b;
            }
            while(x > t){
                x -= b;
            }
            if (x == t) ans = i;
            i--;
            x = s;
        }
        return ans;
    }
}
